# 导入flask_migrate扩展和script扩展
from flask_script import Manager
from flask_migrate import Migrate,MigrateCommand
# 从info目录下导入db，app
from info import create_app,db,models
from info.models import User

"""
项目框架搭建：
1、先易后难，学习的顺序，从后到前
2、依次使用各种扩展包

前后端数据交互：
1、请求方法：
get查询：前端需要给后端传入参数，又不是敏感数据，放在url中传参数，问号后面的，以等号传值，以&号分隔叫做查询字符串。
示例：http://127.0.0.1:5000/?a=1&b=2
示例：新闻列表页；
post新建：前端需要给后端传入参数，表单数据或是敏感数据，放在请求体中的，前后端数据交互需要统一数据格式，目前使用最多的就是
json；xml
示例：比如注册登录等；
put修改、delete删除
2、数据交互：
2.1模板渲染：前端访问一个url地址，触发视图函数，业务处理，把数据传给模板，静态数据，整体刷新。
2.2ajax动态加载：局部刷新，根据参数的不同，实现不同数据的加载。

七牛云平台：
1、七牛云存储的是具体的文件，返回的文件的名称
2、项目中：mysql数据库存储的图片的名称，html页面中存储的是图片的绝对路径=七牛云空间的外链域名 + 图片的名称

"""
app = create_app('development')

# 实例化管理对象
manage = Manager(app)
# 数据库迁移
Migrate(app,db)
# 添加迁移命令
manage.add_command("db",MigrateCommand)

"""
迁移步骤：
1、创建迁移仓库
python manage.py db init 
2、创建迁移脚本
python manage.py db migrate -m 'init_tables'
3、执行迁移脚本
python manage.py db upgrade 

迁移脚本不成功：在manage.py文件中导入models

"""

# 创建管理员账户
# 在script扩展，自定义脚本命令，以自定义函数的形式实现创建管理员用户
# 以终端启动命令的形式实现；
# 在终端使用命令：
# python manage.py create_supperuser -n 用户名 -p 密码
# python manage.py create_supperuser -n admin -p 123456
@manage.option('-n', '-name', dest='name')
@manage.option('-p', '-password', dest='password')
def create_supperuser(name, password):
    if not all([name, password]):
        print('参数缺失')
    user = User()
    user.nick_name = name
    user.mobile = name
    user.password = password
    user.is_admin = True
    try:
        db.session.add(user)
        db.session.commit()
    except Exception as e:
        db.session.rollback()
        print(e)
    print('管理员创建成功')

if __name__ == '__main__':
    # app.run(debug=True)
    print(app.url_map)
    manage.run()
